<?php

namespace app\admin\controller;

use think\Controller;
use think\Request;
use think\Db;

class Role extends AdminController
{
	public function index()
    {
        //查询数据
        $list = db('role')->select();
        return view('role/list',[
            'title'=>'角色列表',
            'list'=>$list,
        ]);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {   
        return view('/role/add',['title'=>'新增角色']);;
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {   
        // 新增数据
        $data = $request->post();
        if ( empty($data['name']) ) { $this->redirect('admin/Role/create'); }
        $row = db('role')->insert($data);
        if ($row) {
            return  $this->success('添加完成',url('admin/Role/index'));
        }else{
            return $this->error('添加失败');
        }
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {   
       // 显示查询
        $name = db('role')->field('name')->find($id);
        $list = db('node')->field('name,id')->where('status','eq','1')->select();
        $data = Db::field('nid')
        ->table(['s75_node'=>'n','s75_role'=>'r','s75_role_node'=>'rn'])
        ->where('n.id=nid')->where('r.id=rid')->where('r.id','=',$id)
        ->select();

        $arr = []; // 角色池
        foreach ($data as $k => $v) {
            $arr[] = $v['nid'];
        }
        // 当前id存在list中给true
        foreach ($list as $k => $v) {
            $list[$k]['mark']= 0;
            if (in_array($v['id'],$arr)) {
                $list[$k]['mark'] = 1;
            }
        }
 
        return view('role/read',[
            'title'=>$name['name'].'的权限信息',
            'list'=>$list,
            'id'=>$id,
            'arr'=>$arr
        ]);
        
    }

     /**
     * 执行分配角色
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function allot(Request $request)
    {   
        $data = $request->put();
        if (empty($data)) { $this->redirect('admin/Role/read'); }
        
        // 拼键值对
        $count = count($data['nid']);
        $arr = [];
        for ($i=0; $i < $count; $i++) { 
          $arr[$i] = ['rid'=>$data['rid'],'nid'=>$data['nid'][$i]];
        }
        // var_dump($arr);die;
        // 删除
        $result = db('role_node')->where('rid','=',$data['rid'][0])->delete();
        // 插入
        $result = db('role_node')->insertAll($arr);
        if ($result) {
            return  $this->success('分配完成',url('admin/Role/index'));
        }else{
            return $this->error('分配失败');
        }
    }

   /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {   return;
        $list = db('role')->where('id',$id)->select();
        return view('role/edit',[
            'title'=>'编辑角色',
            'list'=>$list[0]
        ]);
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {   
        $data = $request->put();
        $result = db('role')->update($data);
        
        // 显示修改
         if ($result > 0) {
            $info['status'] = true;
            $info['id'] = $id;
            $info['info'] = 'ID为' .$id. '的角色修改成功!';
        }else{
            $info['status'] = false;
            $info['id'] = $id;
            $info['info'] = '修改失败';
        }
        return json($info);
        
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {   
        $result = db('role')->delete($id);
        if ($result > 0) {
            $info['status'] = true;
            $info['id'] = $id;
            $info['info'] = 'ID为'.$id.'的角色删除成功!';
        }else{
            $info['status'] = false;
            $info['id'] = $id;
            $info['info'] = '删除失败';
        }


        // echo json_encode($result);
        return json($info);
    }
}
